From: Boyuan Yang Date: Mon, 13 Apr 2020 22:08:06 +0000 (-0400) Subject: New upstream version 1.0.6 X-Git-Tag: archive/raspbian/1.1.9+ds1-4+rpi1^2^2~15^2~14 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=69f39a1c3831bdea9b4ef699e257ad8da854bd19;p=opencc.git New upstream version 1.0.6 --- diff --git a/.gitignore b/.gitignore index d048191..6de0798 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.tgz .project .cproject +/.vscode /build /other /doc/html diff --git a/.travis.yml b/.travis.yml index 7f71b24..545a838 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,9 @@ cache: node_js: - stable + - 13 - 10 - 8 - - 6 os: - linux diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a29415..5c9ee72 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,7 @@ set (PACKAGE_URL https://github.com/BYVoid/Opencc) set (PACKAGE_BUGREPORT https://github.com/BYVoid/Opencc/issues) set (OPENCC_VERSION_MAJOR 1) set (OPENCC_VERSION_MINOR 0) -set (OPENCC_VERSION_REVISION 5) +set (OPENCC_VERSION_REVISION 6) if (CMAKE_BUILD_TYPE MATCHES Debug) set (version_suffix .Debug) diff --git a/NEWS.md b/NEWS.md index b3c2fc6..5bd4cbc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,14 @@ # Change History of OpenCC +## Version 1.0.6 + +2020年4月13日 + +* 正式支持日本語新字體轉換。 +* 升級Node.js依賴,改進兼容性。 +* 修復多處多平臺編譯和兼容性問題。 +* 修正大量轉換錯誤。 + ## Version 1.0.5 2017年2月6日 diff --git a/README.md b/README.md index 8551558..8f3e6bd 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,11 @@ Open Chinese Convert (OpenCC, 開放中文轉換) is an opensource project for conversion between Traditional Chinese and Simplified Chinese, supporting character-level conversion, phrase-level conversion, variant conversion and regional idioms among Mainland China, Taiwan and Hong kong. -中文簡繁轉換開源項目,支持詞彙級別的轉換、異體字轉換和地區習慣用詞轉換(中國大陸、臺灣、香港)。 +中文簡繁轉換開源項目,支持詞彙級別的轉換、異體字轉換和地區習慣用詞轉換(中國大陸、臺灣、香港、日本新字體)。 + +## Discussion 討論 + +Telegram: https://t.me/open_chinese_convert ### Features 特點 @@ -17,20 +21,20 @@ Open Chinese Convert (OpenCC, 開放中文轉換) is an opensource project for c * 嚴格審校一簡對多繁詞條,原則爲「能分則不合」。 * 支持中國大陸、臺灣、香港異體字和地區習慣用詞轉換,如「裏」「裡」、「鼠標」「滑鼠」。 * 詞庫和函數庫完全分離,可以自由修改、導入、擴展。 -* 支持C、C++、Python、PHP、Java、Ruby、Node.js and Android。 -* 兼容Windows、Linux、Mac平臺。 +* 支持 C、C++、Python、PHP、Java、Ruby、Node.js、Android。 +* 兼容 Windows、Linux、Mac 平臺。 ### Links 相關鏈接 * Introduction 詳細介紹 https://github.com/BYVoid/OpenCC/wiki/%E7%B7%A3%E7%94%B1 -* OpenCC Online (在線轉換) http://opencc.byvoid.com/ +* OpenCC Online (在線轉換) https://opencc.byvoid.com/ * 現代漢語常用簡繁一對多字義辨析表 http://ytenx.org/byohlyuk/KienxPyan ## Installation 安裝 * [Debian](http://packages.qa.debian.org/o/opencc.html) * [Ubuntu](https://launchpad.net/ubuntu/+source/opencc) -* [Fedora](https://admin.fedoraproject.org/pkgdb/package/opencc/) +* [Fedora](https://apps.fedoraproject.org/packages/opencc/) * [Arch Linux](https://www.archlinux.org/packages/community/x86_64/opencc/) * [Mac OS](https://github.com/Homebrew/homebrew-core/blob/master/Formula/opencc.rb) * [Node.js](https://npmjs.org/package/opencc) @@ -45,6 +49,18 @@ https://bintray.com/byvoid/opencc/OpenCC `opencc --help` +### Node.js + +```js +const OpenCC = require('opencc'); +const opencc = new OpenCC('s2t.json'); +opencc.convertPromise("汉字").then(converted => { + console.log(converted); // 漢字 +}); +``` + +See `[demo.js](https://github.com/BYVoid/OpenCC/blob/master/node/demo.js)`. + ### Configurations 配置文件 #### 預設配置文件 @@ -59,6 +75,7 @@ https://bintray.com/byvoid/opencc/OpenCC * `tw2sp.json` Traditional Chinese (Taiwan Standard) to Simplified Chinese with Mainland Chinese idiom 繁體(臺灣正體標準)到簡體並轉換爲中國大陸常用詞彙 * `t2tw.json` Traditional Chinese (OpenCC Standard) to Taiwan Standard 繁體(OpenCC 標準)到臺灣正體 * `t2hk.json` Traditional Chinese (OpenCC Standard) to Hong Kong Standard 繁體(OpenCC 標準)到香港繁體(香港小學學習字詞表標準) +* `t2jp.json` Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai) 繁體(OpenCC 標準,舊字體)到日文新字體 ## Development Documentation 開發文檔 @@ -70,39 +87,39 @@ https://bintray.com/byvoid/opencc/OpenCC Linux (gcc 4.6 is required): -``` +```bash make sudo make install ``` Mac OS X (clang 3.2 is required): -``` +```bash make PREFIX=/usr/local sudo make PREFIX=/usr/local install ``` Windows MSYS: -``` +```bash cmake -H. -Bbuild -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="path/to/install" cmake --build build --config Release --target install ``` Windows Visual Studio (2013 or higher required): -``` +```bash cmake -H. -Bbuild -G"Visual Studio 12" -DCMAKE_INSTALL_PREFIX="path/to/install" cmake --build build --config Release --target install ``` -### iOS +### iOS (Unofficial) See https://github.com/gelosie/OpenCC/tree/master/iOS Or [SwiftyOpenCC](https://github.com/XQS6LB3A/SwiftyOpenCC) -### Android +### Android (Unofficial) See [android-opencc](https://github.com/qichuan/android-opencc) @@ -147,6 +164,7 @@ https://github.com/BYVoid/OpenCC/blob/master/NEWS.md * [Paul Meng](http://home.mno2.org/) * [Lawrence Lau](https://github.com/ktslwy) * [瑾昀](https://github.com/kunki) +* [內木一郎](https://github.com/SyaoranHinata) * [Marguerite Su](https://www.marguerite.su/) * [Brian White](http://mscdex.net) * [Qijiang Fan](https://fqj.me/) @@ -173,5 +191,7 @@ https://github.com/BYVoid/OpenCC/blob/master/NEWS.md * [Cychih](https://github.com/pi314) * [kyleskimo](https://github.com/kyleskimo) * [Ryuan Choi](https://github.com/bunhere) +* [Tony Able](https://github.com/TonyAble) +* [Xiao Liang](https://github.com/yxliang01) Please update this list you have contributed OpenCC. diff --git a/appveyor.yml b/appveyor.yml index 599ad6e..f3419ef 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,9 +6,9 @@ build: off environment: matrix: - nodejs_version: stable + - nodejs_version: 13 - nodejs_version: 10 - nodejs_version: 8 - - nodejs_version: 6 platform: - x64 diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 1516775..3d39e31 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,6 +1,8 @@ +find_package(PythonInterp REQUIRED) + set(OPENCC_DICT_BIN opencc_dict) -set(DICT_MERGE_BIN python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/merge.py) -set(DICT_REVERSE_BIN python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/reverse.py) +set(DICT_MERGE_BIN "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/merge.py") +set(DICT_REVERSE_BIN "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/reverse.py") set(DICT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dictionary) set(DICT_GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR}) @@ -12,10 +14,12 @@ set( TSPhrases TWVariants TWVariantsRevPhrases - JPVariants HKVariants HKVariantsPhrases HKVariantsRevPhrases + JPVariants + JPShinjitaiCharacters + JPShinjitaiPhrases ) set( @@ -24,6 +28,7 @@ set( TWPhrasesRev TWVariantsRev HKVariantsRev + JPVariantsRev ) set(DICTS ${DICTS_RAW} ${DICTS_GENERATED}) @@ -85,6 +90,15 @@ set( ${DICT_REVERSE_BIN} ${DICT_HKVariantsRev_GENERATING_INPUT} HKVariantsRev.txt ) +set( + DICT_JPVariantsRev_GENERATING_INPUT + ${DICT_DIR}/JPVariants.txt +) +set( + DICT_JPVariantsRev_GENERATING_COMMAND + ${DICT_REVERSE_BIN} ${DICT_JPVariantsRev_GENERATING_INPUT} JPVariantsRev.txt +) + foreach(DICT ${DICTS_GENERATED}) add_custom_command( OUTPUT @@ -147,6 +161,8 @@ set(CONFIG_FILES config/s2hk.json config/hk2s.json config/t2hk.json + config/t2jp.json + config/jp2t.json ) install( diff --git a/data/config/jp2t.json b/data/config/jp2t.json new file mode 100644 index 0000000..f6fd0e1 --- /dev/null +++ b/data/config/jp2t.json @@ -0,0 +1,25 @@ +{ + "name": "New Japanese Kanji (Shinjitai) to Traditional Chinese Characters (Kyūjitai)", + "segmentation": { + "type": "mmseg", + "dict": { + "type": "ocd", + "file": "JPShinjitaiPhrases.ocd" + } + }, + "conversion_chain": [{ + "dict": { + "type": "group", + "dicts": [{ + "type": "ocd", + "file": "JPShinjitaiPhrases.ocd" + }, { + "type": "ocd", + "file": "JPShinjitaiCharacters.ocd" + }, { + "type": "ocd", + "file": "JPVariantsRev.ocd" + }] + } + }] +} diff --git a/data/config/t2hk.json b/data/config/t2hk.json index d657861..4796c37 100644 --- a/data/config/t2hk.json +++ b/data/config/t2hk.json @@ -4,13 +4,19 @@ "type": "mmseg", "dict": { "type": "ocd", - "file": "HKVariants.ocd" + "file": "HKVariantsPhrases.ocd" } }, "conversion_chain": [{ "dict": { - "type": "ocd", - "file": "HKVariants.ocd" + "type": "group", + "dicts": [{ + "type": "ocd", + "file": "HKVariantsPhrases.ocd" + }, { + "type": "ocd", + "file": "HKVariants.ocd" + }] } }] } diff --git a/data/config/t2jp.json b/data/config/t2jp.json new file mode 100644 index 0000000..8dc7282 --- /dev/null +++ b/data/config/t2jp.json @@ -0,0 +1,16 @@ +{ + "name": "Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai)", + "segmentation": { + "type": "mmseg", + "dict": { + "type": "ocd", + "file": "JPVariants.ocd" + } + }, + "conversion_chain": [{ + "dict": { + "type": "ocd", + "file": "JPVariants.ocd" + } + }] +} diff --git a/data/config/tw2sp.json b/data/config/tw2sp.json index 86078fe..1437f18 100644 --- a/data/config/tw2sp.json +++ b/data/config/tw2sp.json @@ -11,6 +11,9 @@ "dict": { "type": "group", "dicts": [{ + "type": "ocd", + "file": "TWPhrasesRev.ocd" + }, { "type": "ocd", "file": "TWVariantsRevPhrases.ocd" }, { @@ -18,11 +21,6 @@ "file": "TWVariantsRev.ocd" }] } - }, { - "dict": { - "type": "ocd", - "file": "TWPhrasesRev.ocd" - } }, { "dict": { "type": "group", diff --git a/data/dictionary/HKVariants.txt b/data/dictionary/HKVariants.txt index 2660bca..f61e8d5 100644 --- a/data/dictionary/HKVariants.txt +++ b/data/dictionary/HKVariants.txt @@ -4,7 +4,9 @@ 冗 宂 勳 勛 叄 叁 +告 吿 啓 啟 +喫 吃 嘆 歎 囪 囱 妝 粧 @@ -27,7 +29,7 @@ 榲 榅 檯 枱 氳 氲 -涌 湧 +涌 湧 涌 涗 涚 溫 温 溼 濕 diff --git a/data/dictionary/JPShinjitaiCharacters.txt b/data/dictionary/JPShinjitaiCharacters.txt new file mode 100644 index 0000000..4dd885f --- /dev/null +++ b/data/dictionary/JPShinjitaiCharacters.txt @@ -0,0 +1,6 @@ +両 兩 輛 +弁 辨 辯 瓣 辦 弁 +御 御 禦 +欠 缺 欠 +糸 絲 糸 +芸 藝 芸 diff --git a/data/dictionary/JPShinjitaiPhrases.txt b/data/dictionary/JPShinjitaiPhrases.txt new file mode 100644 index 0000000..3a85c88 --- /dev/null +++ b/data/dictionary/JPShinjitaiPhrases.txt @@ -0,0 +1,176 @@ +一獲千金 一攫千金 +丁寧 叮嚀 +丁重 鄭重 +三差路 三叉路 +世論 輿論 +亜鈴 啞鈴 +交差 交叉 +供宴 饗宴 +俊馬 駿馬 +保塁 堡壘 +個条書 箇条書 +偏平 扁平 +停泊 碇泊 +優俊 優駿 +先兵 尖兵 +先鋭 尖鋭 +共役 共軛 +冗舌 饒舌 +凶器 兇器 +削岩 鑿岩 +包丁 庖丁 +包帯 繃帯 +区画 區劃 +厳然 儼然 +友宜 友誼 +反乱 叛乱 +収集 蒐集 +叙情 抒情 +台頭 擡頭 +合弁 合辦 +喜遊曲 嬉遊曲 +嘆願 歎願 +回転 廻転 +回遊 回游 +奉持 捧持 +委縮 萎縮 +展転 輾轉 +希少 稀少 +幻惑 眩惑 +広範 廣汎 +広野 曠野 +廃虚 廢墟 +建坪率 建蔽率 +弁当 辨當 +弁膜 瓣膜 +弁護 辯護 +弁髪 辮髮 +弦歌 絃歌 +恩義 恩誼 +意向 意嚮 +慰謝料 慰藉料 +憶断 臆断 +憶病 臆病 +戦没 戰歿 +扇情 煽情 +手帳 手帖 +技量 伎倆 +抜粋 抜萃 +披歴 披瀝 +抵触 牴触 +抽選 抽籤 +拘引 勾引 +拠出 醵出 +拠金 醵金 +掘削 掘鑿 +控除 扣除 +援護 掩護 +放棄 抛棄 +散水 撒水 +敬謙 敬虔 +敷延 敷衍 +断固 断乎 +族生 簇生 +昇叙 陞敘 +暖房 煖房 +暗唱 暗誦 +暗夜 闇夜 +暴露 曝露 +枯渇 涸渇 +格好 恰好 +格幅 恰幅 +棄損 毀損 +模索 摸索 +橋頭保 橋頭堡 +欠缺 欠缺 +死体 屍體 +殿部 臀部 +母指 拇指 +気迫 気魄 +決別 訣別 +決壊 決潰 +沈殿 沈澱 +油送船 油槽船 +波乱 波瀾 +注釈 註釋 +洗浄 洗滌 洗浄 +活発 活潑 +浸透 滲透 +浸食 浸蝕 +消却 銷卻 +混然 渾然 +湾曲 彎曲 +溶接 熔接 +漁労 漁撈 +漂然 飄然 +激高 激昂 +火炎 火焰 +焦燥 焦躁 +班点 斑点 +留飲 溜飲 +略奪 掠奪 +疎通 疏通 +発酵 醱酵 +白亜 白堊 +相克 相剋 +知恵 智慧 +破棄 破毀 +確固 確乎 +禁固 禁錮 +符丁 符牒 +粉装 扮装 +紫班 紫斑 +終息 終熄 +総合 綜合 +編集 編輯 +義援 義捐 +耕運機 耕耘機 +肝心 肝腎 +肩甲骨 肩胛骨 +背徳 悖德 +脈拍 脈搏 +膨張 膨脹 +芳純 芳醇 +英知 叡智 +蒸留 蒸溜 +薫蒸 燻蒸 +薫製 燻製 +衣装 衣裳 +衰退 衰退 衰頽 +裕然 悠然 +補佐 輔佐 +訓戒 訓誡 +試練 試煉 +詭弁 詭辯 +講和 媾和 +象眼 象嵌 +貫録 貫禄 +買弁 買辦 +賛辞 讚辭 +踏襲 蹈襲 +車両 車輛 +転倒 顛倒 +輪郭 輪廓 +退色 褪色 +途絶 杜絶 +連係 連繫 +連合 聯合 +選考 銓衡 +酢酸 醋酸 +野卑 野鄙 +鉱石 礦石 +間欠 間歇 +関数 函數 +防御 防禦 +険阻 嶮岨 +障壁 牆壁 +障害 障礙 +隠滅 湮滅 +集落 聚落 +雇用 雇傭 +風諭 諷喩 +飛語 蜚語 +香典 香奠 +骨格 骨骼 +高進 亢進 +鳥観 鳥瞰 diff --git a/data/dictionary/JPVariants.txt b/data/dictionary/JPVariants.txt index 5cf4257..adf08ff 100644 --- a/data/dictionary/JPVariants.txt +++ b/data/dictionary/JPVariants.txt @@ -4,14 +4,15 @@ 亞 亜 佛 仏 來 来 -倂 併 假 仮 傳 伝 僞 偽 價 価 儉 倹 兒 児 +內 内 兩 両 +剎 刹 剩 剰 劍 剣 劑 剤 @@ -19,12 +20,16 @@ 勳 勲 勵 励 勸 勧 +勻 匀 區 区 卷 巻 -卽 即 +卻 却 參 参 +吳 呉 +咒 呪 啞 唖 單 単 +噓 嘘 嚙 噛 嚴 厳 囑 嘱 @@ -45,6 +50,7 @@ 壽 寿 奧 奥 奬 奨 +妝 粧 孃 嬢 學 学 寢 寝 @@ -56,35 +62,37 @@ 專 専 對 対 屆 届 -屛 屏 屬 属 +峯 峰 峽 峡 嶽 岳 巖 巌 巢 巣 帶 帯 -幷 并 +廁 厠 廢 廃 廣 広 廳 庁 彈 弾 彌 弥 彎 弯 +彥 彦 徑 径 從 従 徵 徴 德 徳 恆 恒 +悅 悦 惠 恵 惡 悪 惱 悩 -愼 慎 慘 惨 應 応 懷 懐 戀 恋 戰 戦 戲 戯 +戶 戸 戾 戻 拂 払 拔 抜 @@ -95,31 +103,35 @@ 搔 掻 搖 揺 搜 捜 +摑 掴 擇 択 擊 撃 擔 担 據 拠 -擧 挙 擴 拡 攝 摂 攪 撹 收 収 效 効 -敍 叙 敕 勅 +敘 叙 數 数 斷 断 +晉 晋 晚 晩 晝 昼 +暨 曁 曆 暦 曉 暁 曾 曽 會 会 枡 桝 +查 査 條 条 棧 桟 +棱 稜 棱 +榆 楡 榮 栄 -槪 概 樂 楽 樓 楼 樞 枢 @@ -131,6 +143,7 @@ 歐 欧 歡 歓 步 歩 +歲 歳 歷 歴 歸 帰 殘 残 @@ -138,31 +151,37 @@ 毆 殴 每 毎 氣 気 +污 汚 +沒 没 涉 渉 淚 涙 淨 浄 淺 浅 渴 渇 +溌 潑 溪 渓 溫 温 +溼 湿 滯 滞 滿 満 潛 潜 -澁 渋 +澀 渋 澤 沢 -濕 湿 濟 済 +濤 涛 濱 浜 濾 沪 瀧 滝 瀨 瀬 灣 湾 +焔 焰 燈 灯 燒 焼 營 営 爐 炉 爭 争 爲 為 +牀 床 犧 犠 狀 状 狹 狭 @@ -171,32 +190,37 @@ 獸 獣 獻 献 瓣 弁 -甁 瓶 +產 産 畫 画 當 当 疊 畳 +疎 疏 +痹 痺 瘦 痩 癡 痴 發 発 +皋 皐 盜 盗 盡 尽 -眞 真 -硏 研 碎 砕 祕 秘 祿 禄 +禦 御 禪 禅 禮 礼 禱 祷 +稅 税 稱 称 稻 稲 穎 頴 穗 穂 穩 穏 穰 穣 +竃 竈 竊 窃 -竝 並 粹 粋 +糉 粽 +絕 絶 絲 糸 經 経 綠 緑 @@ -205,27 +229,41 @@ 縣 県 縱 縦 總 総 +繋 繫 繡 繍 繩 縄 繪 絵 繼 継 續 続 +纔 才 纖 繊 缺 欠 罐 缶 +羣 群 +聯 連 +聰 聡 聲 声 聽 聴 肅 粛 +脣 唇 +脫 脱 腦 脳 +腳 脚 膽 胆 臟 臓 臺 台 與 与 +舉 挙 舊 旧 +舍 舎 +荔 茘 莊 荘 莖 茎 +菸 煙 +萊 莱 萬 万 蔣 蒋 +蔥 葱 薰 薫 藏 蔵 藝 芸 @@ -239,13 +277,12 @@ 蠟 蝋 蠶 蚕 蠻 蛮 -衞 衛 裝 装 -襃 褒 覺 覚 覽 覧 觀 観 觸 触 +說 説 謠 謡 證 証 譯 訳 @@ -255,33 +292,39 @@ 讓 譲 豐 豊 豫 予 +貓 猫 貳 弐 賣 売 賴 頼 贊 賛 +贗 贋 踐 践 輕 軽 +輛 輌 轉 転 辨 弁 辭 辞 辯 弁 遞 逓 +遥 遙 遲 遅 邊 辺 -郞 郎 -鄕 郷 +鄉 郷 +酢 醋 醉 酔 +醗 醱 醫 医 醬 醤 釀 醸 釋 釈 +鋪 舗 錄 録 錢 銭 鍊 錬 -鎭 鎮 鐵 鉄 鑄 鋳 鑛 鉱 +閱 閲 關 関 陷 陥 隨 随 @@ -289,11 +332,12 @@ 隱 隠 雙 双 雜 雑 +雞 鶏 霸 覇 靈 霊 靜 静 +顏 顔 顯 顕 -飜 翻 餘 余 騷 騒 驅 駆 @@ -302,14 +346,14 @@ 髓 髄 體 体 髮 髪 -鬪 闘 -鷄 鶏 +鬥 闘 +鱉 鼈 鷗 鴎 鹼 鹸 鹽 塩 麥 麦 +麪 麺 麴 麹 -麵 麺 黃 黄 黑 黒 默 黙 @@ -320,69 +364,4 @@ 齒 歯 齡 齢 龍 竜 -欄 欄 -廊 廊 -朗 朗 -虜 虜 -殺 殺 -類 類 -隆 隆 -塚 塚 -猪 猪 -神 神 -祥 祥 -福 福 -諸 諸 -都 都 -侮 侮 -僧 僧 -免 免 -勉 勉 -勤 勤 -卑 卑 -喝 喝 -嘆 嘆 -器 器 -塀 塀 -墨 墨 -層 層 -悔 悔 -慨 慨 -憎 憎 -懲 懲 -敏 敏 -暑 暑 -梅 梅 -海 海 -渚 渚 -漢 漢 -煮 煮 -琢 琢 -碑 碑 -社 社 -祉 祉 -祈 祈 -祐 祐 -祖 祖 -祝 祝 -禍 禍 -禎 禎 -穀 穀 -突 突 -節 節 -練 練 -繁 繁 -署 署 -者 者 -臭 臭 -著 著 -褐 褐 -視 視 -謁 謁 -謹 謹 -賓 賓 -贈 贈 -逸 逸 -難 難 -響 響 -頻 頻 +龜 亀 diff --git a/data/dictionary/STCharacters.txt b/data/dictionary/STCharacters.txt index 6d9ff27..424cd9f 100644 --- a/data/dictionary/STCharacters.txt +++ b/data/dictionary/STCharacters.txt @@ -367,6 +367,7 @@ 叹 嘆 歎 叽 嘰 吁 籲 吁 +吃 喫 吃 合 合 閤 吊 吊 弔 同 同 衕 @@ -451,7 +452,6 @@ 圣 聖 圹 壙 场 場 -坂 阪 坏 壞 坐 坐 座 块 塊 @@ -851,7 +851,7 @@ 杩 榪 杯 杯 盃 杰 傑 杰 -松 鬆 松 +松 松 鬆 板 板 闆 极 極 极 构 構 @@ -895,7 +895,7 @@ 桨 槳 桩 樁 桪 樳 -梁 樑 梁 +梁 梁 樑 梦 夢 梼 檮 梾 棶 diff --git a/data/dictionary/STPhrases.txt b/data/dictionary/STPhrases.txt index 141d137..274d093 100644 --- a/data/dictionary/STPhrases.txt +++ b/data/dictionary/STPhrases.txt @@ -55,7 +55,7 @@ 一同 一同 一向 一向 一周 一週 -一周天 一週天 +一周天 一周天 一周年 一週年 一周遭 一周遭 一哄 一鬨 @@ -2843,7 +2843,8 @@ 于途 於途 于道泉 于道泉 于邑 於邑 -于都县 於都縣 +于都 于都 +于都县 于都縣 于里察 于里察 于野 於野 于阗 于闐 @@ -3423,6 +3424,7 @@ 什不闲 什不閒 什么 什麼 什叶派 什葉派 +什里店 什里店 什锦炒面 什錦炒麪 什锦面 什錦麪 什面 什面 @@ -3807,7 +3809,7 @@ 会占卜 會占卜 会发 會發 会合 會合 -会合周期 會合周期 +会合周期 會合週期 会合处 會合處 会合点 會合點 会吊 會弔 @@ -3843,8 +3845,8 @@ 会计系 會計系 会议记录 會議記錄 会逢其适 會逢其適 -会里 會裏 -会里县 會裏縣 +会里 會里 +会里县 會里縣 会长团 會長團 会面 會面 会面处 會面處 @@ -5135,7 +5137,7 @@ 光合作用 光合作用 光合细菌 光合細菌 光向 光向 -光周期 光周期 +光周期 光週期 光圈范围 光圈範圍 光复 光復 光复乡 光復鄉 @@ -5828,6 +5830,7 @@ 兰叶撇 蘭葉撇 兰摧玉折 蘭摧玉折 兰摧蕙折 蘭摧蕙折 +兰棱 蘭棱 兰秋 蘭秋 兰艾同烬 蘭艾同燼 兰艾同焚 蘭艾同焚 @@ -8894,6 +8897,7 @@ 励志 勵志 励志书 勵志書 劲度系数 勁度係數 +劲松 勁松 劲秋 勁秋 劲舞团 勁舞團 劲骨丰肌 勁骨豐肌 @@ -11030,7 +11034,7 @@ 发悲 發悲 发悸 發悸 发情 發情 -发情周期 發情周期 +发情周期 發情週期 发情期 發情期 发想 發想 发愁 發愁 @@ -12221,14 +12225,14 @@ 台子孙 臺子孫 台孙 臺孫 台孩 臺孩 -台安 檯安 -台安县 檯安縣 +台安 臺安 檯安 +台安县 臺安縣 台客 臺客 台客呛辣 臺客嗆辣 台客舞 臺客舞 台尺 臺尺 台山 台山 -台山市 臺山市 +台山市 台山市 台峪 臺峪 台州 台州 台州地区 台州地區 @@ -14589,7 +14593,7 @@ 周年 週年 周年庆 週年慶 周年纪念 週年紀念 -周年视差 周年視差 +周年视差 週年視差 周幼婷 周幼婷 周幽王 周幽王 周庄 周莊 @@ -14634,8 +14638,8 @@ 周晬 周晬 周朝 周朝 周期 週期 -周期函数 周期函數 -周期彗星 周期彗星 +周期函数 週期函數 +周期彗星 週期彗星 周期律 週期律 周期性 週期性 周期数 週期數 @@ -14703,7 +14707,7 @@ 周美青 周美青 周考 週考 周而不比 周而不比 -周而复始 周而復始 +周而复始 週而復始 周至 周至 周至县 周至縣 周董 周董 @@ -14724,11 +14728,11 @@ 周边 周邊 周边设备 周邊設備 周迅 周迅 -周近 週近 +周近 周近 周遍 周遍 周道 周道 周遭 周遭 -周遭事物 週遭事物 +周遭事物 周遭事物 周遮 周遮 周邦彦 周邦彥 周郎 周郎 @@ -14766,6 +14770,7 @@ 咀嚼出 咀嚼出 和丰 和豐 和了 和了 +和什托洛盖 和什托洛蓋 和光同尘 和光同塵 和克制 和剋制 和合 和合 @@ -15054,6 +15059,7 @@ 哲学系 哲學系 哲学范畴 哲學範疇 哲布尊丹巴 哲布尊丹巴 +哲里木 哲里木 哺喂 哺餵 哼个 哼個 哼出 哼出 @@ -16031,6 +16037,7 @@ 图资系统 圖資系統 图里 圖裏 图里亚夫 圖里亞夫 +图里河 圖里河 图鉴 圖鑑 图面 圖面 囿于 囿於 @@ -16272,7 +16279,7 @@ 坛场 壇場 坛坛罐罐 罈罈罐罐 坛坫 壇坫 -坛坫周旋 壇坫週旋 +坛坫周旋 壇坫周旋 坛城 壇城 坛女儿红 罈女兒紅 坛好酒 罈好酒 @@ -17241,7 +17248,7 @@ 大后年 大後年 大后方 大後方 大周后 大周后 -大周折 大週摺 +大周折 大周折 大咸 大咸 大哗 大譁 大回 大回 @@ -17541,8 +17548,7 @@ 太子舍人 太子舍人 太干 太乾 太平御览 太平御覽 -太平洋周边 太平洋週邊 -太平洋周邊 太平洋周邊 +太平洋周边 太平洋周邊 太平洋联合铁路 太平洋聯合鐵路 太扯了 太扯了 太松 太鬆 @@ -17559,7 +17565,7 @@ 太谷 太谷 太谷县 太谷縣 太谷灯 太谷燈 -太阳升 太陽升 +太阳升 太陽昇 太阳历 太陽曆 太阳微系统公司 太陽微系統公司 太阳照在桑干河上 太陽照在桑乾河上 @@ -17568,7 +17574,7 @@ 太阳系 太陽系 太阳能板 太陽能板 太阳谷 太陽谷 -太阳黑子周 太陽黑子周 +太阳黑子周 太陽黑子週 太阴历 太陰曆 太麻里 太麻里 太麻里乡 太麻里鄉 @@ -18533,7 +18539,7 @@ 宜丰县 宜豐縣 宜于 宜於 宜云 宜云 -宝丰 寶丰 寶豐 +宝丰 寶豐 宝丰县 寶豐縣 宝卷 寶卷 宝历 寶曆 @@ -18732,6 +18738,7 @@ 察合台汗国 察合臺汗國 察布查尔 察布查爾 察布查尔县 察布查爾縣 +察干 察干 察核 察覈 察觉出 察覺出 寡占 寡佔 @@ -18922,7 +18929,7 @@ 小叶 小葉 小同乡 小同鄉 小后生 小後生 -小周天 小週天 +小周天 小周天 小回 小回 小场面 小場面 小型柜橱 小型櫃櫥 @@ -19830,6 +19837,7 @@ 布列兹涅夫 布列茲涅夫 布列兹涅夫主义 布列茲涅夫主義 布列塔尼 布列塔尼 +布列开 布列開 布利吉 布利吉 布利斯班 布利斯班 布利斯班市 布利斯班市 @@ -19847,8 +19855,8 @@ 布吉河 布吉河 布吉纳法索 布吉納法索 布告 佈告 -布告栏 布告欄 -布告牌 布告牌 +布告栏 佈告欄 +布告牌 佈告牌 布哈拉 布哈拉 布哈林 布哈林 布哈林模式 布哈林模式 @@ -20425,6 +20433,7 @@ 干坞 乾塢 干城 干城 干堂婶 乾堂嬸 +干塘 乾塘 干大事 幹大事 干头 幹頭 干女 乾女 @@ -20569,6 +20578,7 @@ 干渴 乾渴 干湿 乾溼 干湿发 乾溼髮 +干溪 乾溪 干漆 乾漆 干灯盏 乾燈盞 干点 乾點 幹點 @@ -23663,8 +23673,8 @@ 戚党 戚黨 戚凯罗 戚凱羅 戚友 戚友 -戚墅堰 慼墅堰 -戚墅堰区 慼墅堰區 +戚墅堰 戚墅堰 +戚墅堰区 戚墅堰區 戚夫人 戚夫人 戚家军 戚家軍 戚容 戚容 @@ -23951,7 +23961,7 @@ 才艺秀 才藝秀 才蔽识浅 才蔽識淺 才藻 才藻 -才行 才行 +才行 纔行 才行 才要 纔要 才讲 纔講 才识 才識 @@ -24313,9 +24323,9 @@ 托过 託過 托运 託運 托运行李 托運行李 -托里 托裏 -托里县 托裏縣 -托里拆利 托裏拆利 +托里 托里 +托里县 托里縣 +托里拆利 托里拆利 托鉢 托鉢 托钵人 托鉢人 托钵修会 托鉢修會 @@ -24623,7 +24633,7 @@ 抓出 抓出 抓出去 抓出去 抓出来 抓出來 -抓周 抓週 +抓周 抓周 抓回 抓回 抓回去 抓回去 抓回来 抓回來 @@ -25239,7 +25249,7 @@ 招回去 招回去 招回来 招回來 招复 招復 -招待不周 招待不週 +招待不周 招待不周 招术 招術 招致 招致 拜冬 拜冬 @@ -26807,6 +26817,7 @@ 救恩计划 救恩計劃 救生艇甲板 救生艇甲板 救药 救藥 +敖力布告 敖力布告 敖游 敖遊 敖荡 敖盪 教个 教個 @@ -27147,6 +27158,7 @@ 斗武 鬥武 斗殴 鬥毆 斗气 鬥氣 +斗沟子 斗溝子 斗法 鬥法 斗渠 斗渠 斗灯 斗燈 @@ -27351,8 +27363,8 @@ 新婚不如远别 新婚不如遠別 新嫁娘 新嫁娘 新局面 新局面 -新干 新干 -新干县 新干縣 +新干 新幹 +新干县 新幹縣 新干线 新幹線 新庄 新莊 新庄市 新莊市 @@ -27764,6 +27776,7 @@ 昆山 崑山 昆布 昆布 昆曲 崑曲 +昆玉 崑玉 昆腔 崑腔 昆苏 崑蘇 昆虫 昆蟲 @@ -28496,6 +28509,7 @@ 曷极 曷極 曹余章 曹餘章 曹参 曹參 +曹子里 曹子里 曹郁芬 曹郁芬 曼尼托巴省 曼尼托巴省 曼苏尔 曼蘇爾 @@ -29551,6 +29565,8 @@ 松喉 鬆喉 松土 鬆土 松土机 鬆土機 +松坎 松坎 +松坝 松壩 松垮 鬆垮 松大辅 松大輔 松子 松子 @@ -29611,6 +29627,7 @@ 松柏长青茶 松柏長青茶 松柔 鬆柔 松树 松樹 +松桃 松桃 松桃县 松桃縣 松桃苗族自治县 松桃苗族自治縣 松毛 松毛 @@ -29622,6 +29639,7 @@ 松江区 松江區 松江省 松江省 松江路 松江路 +松河 松河 松油 松油 松油管 鬆油管 松油门 鬆油門 @@ -29631,8 +29649,8 @@ 松涛 松濤 松溪 松溪 松溪县 松溪縣 -松滋 鬆滋 -松滋市 鬆滋市 +松滋 松滋 +松滋市 松滋市 松漠 松漠 松潘 松潘 松潘县 松潘縣 @@ -29958,6 +29976,7 @@ 果子药 果子藥 果干 果乾 果杯 果杯 +果松 果松 果核 果核 果穗 果穗 枝不得大于干 枝不得大於榦 @@ -30056,6 +30075,8 @@ 查克瑞 查克瑞 查准率 查準率 查出 查出 +查干 查干 +查干湖 查干湖 查扣 查扣 查核 查覈 查获 查獲 @@ -30096,7 +30117,7 @@ 査回 查回 査回去 查回去 査回来 查回來 -査找周期 查找周期 +査找周期 查找週期 査报表 查報表 査无实据 查無實據 査获 查獲 @@ -30812,6 +30833,7 @@ 欧胡岛 歐胡島 欧萨苏纳 歐薩蘇納 欧足联杯 歐足聯杯 +欧里 歐里 欧里庇得斯 歐里庇得斯 欧里桑 歐里桑 欧阳修 歐陽修 @@ -32958,6 +32980,7 @@ 温度范围 溫度範圍 温度表 溫度表 温得和克 溫得和克 +温根托海 溫根托海 温祥云 溫祥雲 港制 港製 港制品 港製品 @@ -34811,6 +34834,7 @@ 瓦尔达克省 瓦爾達克省 瓦当 瓦當 瓦当文 瓦當文 +瓦拉干 瓦拉干 瓦松 瓦松 瓦特表 瓦特表 瓦瑞泰克 瓦瑞泰克 @@ -34966,6 +34990,7 @@ 田家庵区 田家庵區 田庄 田莊 田志兴 田志興 +田梁子 田梁子 田父之获 田父之獲 田秋堇 田秋堇 田种玉 田種玉 @@ -35013,7 +35038,6 @@ 电子云 電子雲 电子反制 電子反制 电子学系 電子學系 -电子布告栏 電子布告欄 电子店面 電子店面 电子数据交换 電子數據交換 电子杂志 電子雜誌 @@ -35355,7 +35379,7 @@ 白板天子 白板天子 白板笔 白板筆 白果松 白果松 -白洋淀 白洋澱 +白洋淀 白洋淀 白淨面皮 白淨面皮 白烟 白煙 白皮松 白皮松 @@ -36940,6 +36964,7 @@ 穆克吉 穆克吉 穆巴拉克 穆巴拉克 穆斯坦西里 穆斯坦西里 +穆棱 穆棱 穆罕默德历 穆罕默德曆 穆罕默德历史 穆罕默德歷史 穗儿 穗兒 @@ -40366,8 +40391,9 @@ 苏子油 蘇子油 苏宁 蘇寧 苏宁电器 蘇寧電器 -苏家屯 甦家屯 -苏家屯区 甦家屯區 +苏家 蘇家 +苏家屯 蘇家屯 +苏家屯区 蘇家屯區 苏家明 蘇家明 苏富比 蘇富比 苏富比公司 蘇富比公司 @@ -40668,7 +40694,7 @@ 范士丹 范士丹 范姜 范姜 范字 範字 -范家谦 范家謙 +范家 范家 范宽 范寬 范小姐 范小姐 范尼斯特鲁伊 范尼斯特魯伊 @@ -40725,6 +40751,7 @@ 范进 范進 范逸臣 范逸臣 范金 範金 +范鎮 范鎮 范阳 范陽 范陈柏 范陳柏 范雎 范雎 @@ -42273,6 +42300,7 @@ 西岳 西嶽 西征 西征 西文系 西文系 +西斗铺 西斗鋪 西方极乐 西方極樂 西方极乐世界 西方極樂世界 西晒 西曬 @@ -44466,7 +44494,7 @@ 远志 遠志 远恶 遠惡 远房亲戚 遠房親戚 -远打周折 遠打週折 +远打周折 遠打周折 远期外汇 遠期外匯 远水救不了近火 遠水救不了近火 远游 遠遊 @@ -45485,6 +45513,7 @@ 里昂 里昂 里昂市 里昂市 里昂队 里昂隊 +里木店 里木店 里根 里根 里欧 里歐 里欧斯 里歐斯 @@ -46269,11 +46298,12 @@ 长卷 長卷 长历 長曆 长发 長髮 +长发屯 長發屯 +长发镇 長發鎮 长叹 長嘆 长吁 長吁 长吁短叹 長吁短嘆 长君之恶 長君之惡 -长坂坡七进七出 長阪坡七進七出 长头布 長頭布 长寿烟 長壽菸 长寿面 長壽麪 @@ -46306,7 +46336,7 @@ 长须 長鬚 长须鲸 長鬚鯨 长风万里 長風萬里 -開發周期 開發周期 +開發周期 開發週期 门前门后 門前門後 门吊儿 門吊兒 门帘 門簾 @@ -46522,8 +46552,8 @@ 阳电极 陽電極 阳秋 陽秋 阳虚发热 陽虛發熱 -阳谷 陽谷 -阳谷县 陽谷縣 +阳谷 陽穀 +阳谷县 陽穀縣 阳面 陽面 阴丹布 陰丹布 阴云 陰雲 @@ -48347,7 +48377,7 @@ 高发 高發 高台 高臺 高台县 高臺縣 -高周波 高周波 +高周波 高週波 高唱入云 高唱入雲 高坛 高壇 高处不胜寒 高處不勝寒 @@ -48701,6 +48731,7 @@ 黄曲霉毒素 黃麴黴毒素 黄曲霉菌 黃麴黴菌 黄有才 黃有才 +黄松 黃松 黄梁 黃梁 黄梁梦 黃梁夢 黄梁美梦 黃樑美夢 @@ -48904,8 +48935,8 @@ 龙嵩叶 龍嵩葉 龙斗虎伤 龍鬥虎傷 龙无云而不行 龍無雲而不行 -龙游 龍遊 -龙游县 龍遊縣 +龙游 龍游 +龙游县 龍游縣 龙游浅水 龍游淺水 龙烟铁矿 龍煙鐵礦 龙眼干 龍眼乾 @@ -48915,8 +48946,8 @@ 龙虎并伏 龍虎並伏 龙虎斗 龍虎鬥 龙虾面 龍蝦麪 -龙里 龍裏 -龙里县 龍裏縣 +龙里 龍里 +龙里县 龍里縣 龙钟 龍鍾 龙门吊 龍門吊 龙须 龍鬚 diff --git a/data/dictionary/TWPhrasesIT.txt b/data/dictionary/TWPhrasesIT.txt index 4722568..4d8ca39 100644 --- a/data/dictionary/TWPhrasesIT.txt +++ b/data/dictionary/TWPhrasesIT.txt @@ -291,7 +291,7 @@ SQL注入攻擊 SQL隱碼攻擊 複選按鈕 覈取按鈕 複選框 覈取方塊 視圖 檢視 -視頻 視訊 +視頻 影片 視訊 解釋器 直譯器 觸摸 觸控 觸摸屏 觸控式螢幕 diff --git a/data/dictionary/TWPhrasesOther.txt b/data/dictionary/TWPhrasesOther.txt index 090a9a0..c88527f 100644 --- a/data/dictionary/TWPhrasesOther.txt +++ b/data/dictionary/TWPhrasesOther.txt @@ -3,13 +3,14 @@ 咖喱 咖哩 奔馳 賓士 奶酪 乳酪 -方便麵 速食麵 +方便麪 泡麵 速食麵 涼菜 冷盤 砹 砈 硅 矽 納米 奈米 +自行車 腳踏車 詞組 片語 -蹦極 笨豬跳 +蹦極 高空彈跳 輔音 子音 酰 醯 鈁 鍅 diff --git a/data/dictionary/TWVariants.txt b/data/dictionary/TWVariants.txt index ce6ba24..ac1b060 100644 --- a/data/dictionary/TWVariants.txt +++ b/data/dictionary/TWVariants.txt @@ -1,6 +1,7 @@ 僞 偽 兇 凶 啓 啟 +喫 吃 嫺 嫻 嬀 媯 峯 峰 diff --git a/data/scheme/st_multi.txt b/data/scheme/st_multi.txt index 188f0ee..8777af3 100644 --- a/data/scheme/st_multi.txt +++ b/data/scheme/st_multi.txt @@ -82,6 +82,7 @@ 熏 熏 燻 「燻」特指一種烹飪方法,其餘用「熏」。 熏陶 利慾熏心 臭氣熏天 燻肉 赞 贊 讚 與「表揚」有關意義用「讚」,其餘用「贊」。 贊助 贊同 讚美 尝 嘗 嚐 與「喫」、「品嚐」有關意義用「嚐」,其餘用「嘗」。 嘗試 品嚐 +吃 喫 吃 解作「食」時用「喫」,解作「言蹇難也」時用「吃」。 喫飯 喫水 口吃 烟 煙 菸 「煙」用於一般煙霧,與「菸草」有關時用「菸」。 煙霧 菸草 香菸 周 周 週 賙 與「週期」有關用「週」,濟助他人用「賙」,其餘意義爲「周」。 周朝 眾所周知 週歲 週而復始 賙濟 柜 櫃 柜 表示收藏東西的傢具時作「櫃」,表示一種落葉喬木用「柜」。 書櫃 柜柳 diff --git a/node/configs.gypi b/node/configs.gypi index 64e2271..e148e35 100644 --- a/node/configs.gypi +++ b/node/configs.gypi @@ -15,6 +15,8 @@ "../data/config/s2hk.json", "../data/config/hk2s.json", "../data/config/t2hk.json", + "../data/config/t2jp.json", + "../data/config/jp2t.json", ] }] }] diff --git a/node/dicts.gypi b/node/dicts.gypi index 0ea3452..30eefa2 100644 --- a/node/dicts.gypi +++ b/node/dicts.gypi @@ -150,6 +150,38 @@ "inputs": ["<(input)"], "outputs": ["<(output_prefix)HKVariantsRev.ocd"], "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"] + }, { + "action_name": "JPVariantsRev.txt", + "variables": { + "input": "<(input_prefix)JPVariants.txt", + }, + "inputs": ["<(input)"], + "outputs": ["<(output_prefix)JPVariantsRev.txt"], + "action": ["python", "<(dict_reverse)", "<(input)", "<@(_outputs)"] + }, { + "action_name": "JPVariantsRev", + "variables": { + "input": "<(output_prefix)JPVariantsRev.txt", + }, + "inputs": ["<(input)"], + "outputs": ["<(output_prefix)JPVariantsRev.ocd"], + "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"] + }, { + "action_name": "JPShinjitaiCharacters", + "variables": { + "input": "<(input_prefix)JPShinjitaiCharacters.txt", + }, + "inputs": ["<(input)"], + "outputs": ["<(output_prefix)JPShinjitaiCharacters.ocd"], + "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"] + }, { + "action_name": "JPShinjitaiPhrases", + "variables": { + "input": "<(input_prefix)JPShinjitaiPhrases.txt", + }, + "inputs": ["<(input)"], + "outputs": ["<(output_prefix)JPShinjitaiPhrases.ocd"], + "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"] }], "dependencies": [ "opencc" diff --git a/node/global.gypi b/node/global.gypi index 5becc15..531c0a2 100644 --- a/node/global.gypi +++ b/node/global.gypi @@ -1,6 +1,6 @@ { "variables": { - "opencc_version": "1.0.5" + "opencc_version": "1.0.6" }, "target_defaults": { "defines": [ diff --git a/node/opencc.cc b/node/opencc.cc index b948e55..b0ba289 100644 --- a/node/opencc.cc +++ b/node/opencc.cc @@ -119,7 +119,8 @@ class OpenccBinding : public Nan::ObjectWrap { err, converted }; - conv_data->callback->Call(argc, argv); + Nan::AsyncResource resource("opencc:convert-async-cb"); + conv_data->callback->Call(argc, argv, &resource); delete conv_data; delete req; } diff --git a/node/opencc.js b/node/opencc.js index 67be63f..ecc82d0 100644 --- a/node/opencc.js +++ b/node/opencc.js @@ -26,13 +26,13 @@ * Node.js language binding */ -var path = require('path'); -var bindingPath = require('node-pre-gyp').find(require.resolve('../package.json')); -var binding = require(bindingPath); +const path = require('path'); +const bindingPath = require('node-pre-gyp').find(require.resolve('../package.json')); +const binding = require(bindingPath); -var assetsPath = path.dirname(bindingPath); -var getConfigPath = function (config) { - var configPath = config; +const assetsPath = path.dirname(bindingPath); +const getConfigPath = function (config) { + let configPath = config; if (config[0] !== '/' && config[1] !== ':') { // Resolve relative path configPath = path.join(assetsPath, config); @@ -47,7 +47,7 @@ var getConfigPath = function (config) { * @constructor * @ingroup node_api */ -var OpenCC = module.exports = function (config) { +const OpenCC = module.exports = function (config) { if (!config) { config = 's2t.json'; } @@ -76,10 +76,10 @@ OpenCC.version = binding.Opencc.version(); * @return Converted text. * @ingroup node_api */ -OpenCC.generateDict = function(inputFileName, outputFileName, - formatFrom, formatTo) { +OpenCC.generateDict = function (inputFileName, outputFileName, + formatFrom, formatTo) { return binding.Opencc.generateDict(inputFileName, outputFileName, - formatFrom, formatTo); + formatFrom, formatTo); } /** @@ -119,8 +119,8 @@ OpenCC.prototype.convertSync = function (input) { */ OpenCC.prototype.convertPromise = function (input) { const self = this; - return new Promise(function(resolve, reject) { - self.handler.convert(input.toString(), function(err, text) { + return new Promise(function (resolve, reject) { + self.handler.convert(input.toString(), function (err, text) { if (err) reject(err); else resolve(text); }); diff --git a/node/test.js b/node/test.js index 7020486..17df4e6 100644 --- a/node/test.js +++ b/node/test.js @@ -1,8 +1,10 @@ -var assert = require('assert'); -var fs = require('fs'); -var OpenCC = require('./opencc'); +const assert = require('assert'); +const fs = require('fs'); +const util = require('util'); -var configs = [ +const OpenCC = require('./opencc'); + +const configs = [ 's2t', 's2tw', 's2twp', @@ -11,25 +13,27 @@ var configs = [ 'tw2sp', 's2hk', 'hk2s', + 't2jp', + 'jp2t', ]; -var testSync = function (config, done) { - var inputName = 'test/testcases/' + config + '.in'; - var outputName = 'test/testcases/' + config + '.ans'; - var configName = config + '.json'; - var opencc = new OpenCC(configName); - var text = fs.readFileSync(inputName, 'utf-8'); - var converted = opencc.convertSync(text); - var answer = fs.readFileSync(outputName, 'utf-8'); +const testSync = function (config, done) { + const inputName = 'test/testcases/' + config + '.in'; + const outputName = 'test/testcases/' + config + '.ans'; + const configName = config + '.json'; + const opencc = new OpenCC(configName); + const text = fs.readFileSync(inputName, 'utf-8'); + const converted = opencc.convertSync(text); + const answer = fs.readFileSync(outputName, 'utf-8'); assert.equal(converted, answer); done(); }; -var testAsync = function (config, done) { - var inputName = 'test/testcases/' + config + '.in'; - var outputName = 'test/testcases/' + config + '.ans'; - var configName = config + '.json'; - var opencc = new OpenCC(configName); +const testAsync = function (config, done) { + const inputName = 'test/testcases/' + config + '.in'; + const outputName = 'test/testcases/' + config + '.ans'; + const configName = config + '.json'; + const opencc = new OpenCC(configName); fs.readFile(inputName, 'utf-8', function (err, text) { if (err) return done(err); opencc.convert(text, function (err, converted) { @@ -43,6 +47,19 @@ var testAsync = function (config, done) { }); }; +async function testAsyncPromise(config) { + const inputName = 'test/testcases/' + config + '.in'; + const outputName = 'test/testcases/' + config + '.ans'; + const configName = config + '.json'; + const opencc = new OpenCC(configName); + + const text = await util.promisify(fs.readFile)(inputName, 'utf-8'); + const converted = await opencc.convertPromise(text); + const answer = await util.promisify(fs.readFile)(outputName, 'utf-8'); + + assert.equal(converted, answer); +}; + describe('Sync API', function () { configs.forEach(function (config) { it(config, function (done) { @@ -58,3 +75,11 @@ describe('Async API', function () { }); }); }); + +describe('Async Promise API', function () { + configs.forEach(function (config) { + it(config, function (done) { + testAsyncPromise(config).then(done); + }); + }); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..307bd5b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1607 @@ +{ + "name": "opencc", + "version": "1.0.6", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@octokit/rest": { + "version": "15.18.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-15.18.3.tgz", + "integrity": "sha512-oHABAvvC83tPIuvUfWRaw9eLThFrCxBgywl+KvEwfTFjoCrMOfEaMh0r39+Ub/EEbV345GJiMzN+zPZ4kqOvbA==", + "dev": true, + "requires": { + "before-after-hook": "^1.1.0", + "btoa-lite": "^1.0.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.0", + "lodash": "^4.17.4", + "node-fetch": "^2.1.1", + "universal-user-agent": "^2.0.0", + "url-template": "^2.0.8" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "before-after-hook": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", + "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz", + "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.3", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz", + "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "needle": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz", + "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "node-pre-gyp-github": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/node-pre-gyp-github/-/node-pre-gyp-github-1.4.3.tgz", + "integrity": "sha512-tnJ0iZgzIZnZl7VBgebPYdzOe98dxMnQeDs6+yX1WVdt6IiWu0l4EYes3IY7ZIokRbtJ4iJjqwgGIyQrdfDJSg==", + "dev": true, + "requires": { + "@octokit/rest": "^15.9.5", + "commander": "^2.17.0", + "mime-types": "^2.1.19" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "universal-user-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz", + "integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==", + "dev": true, + "requires": { + "os-name": "^3.0.0" + } + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "windows-release": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz", + "integrity": "sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==", + "dev": true, + "requires": { + "execa": "^1.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + } + } +} diff --git a/package.json b/package.json index 77e9aea..aa7275e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "opencc", - "version": "1.0.5", + "version": "1.0.6", "description": "Conversion between Traditional and Simplified Chinese", "author": "BYVoid ", "license": "Apache-2.0", @@ -10,6 +10,9 @@ "deploy": "node-pre-gyp package && (node-pre-gyp-github publish --release || exit 0)", "install": "node-pre-gyp install --fallback-to-build || node-pre-gyp rebuild" }, + "engines": { + "node": ">= 8.0.0" + }, "binary": { "module_name": "opencc", "module_path": "./build/Release/", @@ -32,11 +35,11 @@ "Traditional Chinese" ], "devDependencies": { - "mocha": "^3.5.0", - "node-pre-gyp-github": "^1.3.1" + "mocha": "^7.1.1", + "node-pre-gyp-github": "^1.4.3" }, "dependencies": { - "nan": "^2.7.0", - "node-pre-gyp": "^0.6.36" + "nan": "^2.14.0", + "node-pre-gyp": "^0.14.0" } -} +} \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 498a4f6..234dc85 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -86,6 +86,7 @@ install( TARGETS libopencc LIBRARY DESTINATION ${DIR_LIBRARY} ARCHIVE DESTINATION ${DIR_LIBRARY} + RUNTIME DESTINATION bin ) install( diff --git a/src/PhraseExtract.cpp b/src/PhraseExtract.cpp index 495ab31..2d5cf7b 100644 --- a/src/PhraseExtract.cpp +++ b/src/PhraseExtract.cpp @@ -1,4 +1,4 @@ -/* +/* * Open Chinese Convert * * Copyright 2015 BYVoid diff --git a/test/CommandLineConvertTest.cpp b/test/CommandLineConvertTest.cpp index e105bab..79026a0 100644 --- a/test/CommandLineConvertTest.cpp +++ b/test/CommandLineConvertTest.cpp @@ -16,8 +16,8 @@ * limitations under the License. */ -#include "gtest/gtest.h" #include "Common.hpp" +#include "gtest/gtest.h" namespace opencc { @@ -96,6 +96,7 @@ TEST_P(ConfigurationTest, Convert) { INSTANTIATE_TEST_CASE_P(CommandLine, ConfigurationTest, ::testing::Values("s2t", "t2s", "s2tw", "s2twp", "tw2s", - "tw2sp", "s2hk", "hk2s")); + "tw2sp", "s2hk", "hk2s", "t2jp", + "jp2t")); } // namespace opencc diff --git a/test/testcases/jp2t.ans b/test/testcases/jp2t.ans new file mode 100644 index 0000000..9cbcdcf --- /dev/null +++ b/test/testcases/jp2t.ans @@ -0,0 +1,4 @@ +舊字體歷史假名遣 新字體現代假名遣 +橫濱 絲魚川 伊豫國 +驛辨當 辨別 辯護士 瓣膜 +藝術 缺航 欠缺 飲料罐 \ No newline at end of file diff --git a/test/testcases/jp2t.in b/test/testcases/jp2t.in new file mode 100644 index 0000000..9178c8a --- /dev/null +++ b/test/testcases/jp2t.in @@ -0,0 +1,4 @@ +旧字体歴史仮名遣 新字体現代仮名遣 +横浜 糸魚川 伊予国 +駅弁当 弁別 弁護士 弁膜 +芸術 欠航 欠缺 飲料缶 \ No newline at end of file diff --git a/test/testcases/t2jp.ans b/test/testcases/t2jp.ans new file mode 100644 index 0000000..c5e8a38 --- /dev/null +++ b/test/testcases/t2jp.ans @@ -0,0 +1,4 @@ +旧字体歴史仮名遣 新字体現代仮名遣 +横浜 糸魚川 伊予国 +駅弁当 弁別 弁護士 弁膜 +芸術 欠航 飲料缶 \ No newline at end of file diff --git a/test/testcases/t2jp.in b/test/testcases/t2jp.in new file mode 100644 index 0000000..c2626d2 --- /dev/null +++ b/test/testcases/t2jp.in @@ -0,0 +1,4 @@ +舊字體歷史假名遣 新字體現代假名遣 +橫濱 絲魚川 伊豫國 +驛辨當 辨別 辯護士 瓣膜 +藝術 缺航 飲料罐 \ No newline at end of file